-- *****************************************************************
-- CISCO-LECS-MIB.my: LECS MIB file
--
-- July 95, Chris Young
--
-- Copyright (c) 1995-1997 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************
--
 CISCO-LECS-MIB DEFINITIONS ::= BEGIN

 IMPORTS
        ciscoMgmt                       FROM CISCO-SMI
        MODULE-IDENTITY, OBJECT-TYPE,
        Counter32, Integer32            FROM SNMPv2-SMI
        ifIndex                         FROM IF-MIB
        MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
        RowStatus, DisplayString, 
        MacAddress, TimeStamp, 
        TruthValue                      FROM SNMPv2-TC
        VpiInteger, 
        VciInteger,
        AtmLaneAddress                  FROM LAN-EMULATION-CLIENT-MIB;

 ciscoLecsMIB   MODULE-IDENTITY
        LAST-UPDATED "9605291437Z"
        ORGANIZATION "Cisco System Inc."
        CONTACT-INFO
                " Cisco System Inc."
        DESCRIPTION
                " The   MIB   module  for   the  management    of LANE
        Configuration in Cisco devices."
        ::= { ciscoMgmt 38 }
        
 ciscoLecsMIBObjects OBJECT IDENTIFIER ::= { ciscoLecsMIB 1 }

 lecs   OBJECT IDENTIFIER ::= { ciscoLecsMIBObjects 1 }
 config OBJECT IDENTIFIER ::= { ciscoLecsMIBObjects 2 }

-- A management  station that wishes to  set up a  LECS on the current
-- device using  this MIB should  perform  the following  steps.  Some
-- parts are  order dependent  while others are  not (more  detail  to
-- follow). An entry  must be entered  into the lecsConfigTblTable.  A
-- default ELAN name is not  required and if it  is not provided, then
-- the lecsConfigTblTable will be  sparse.  This step is not necessary
-- if an entry already exists in the table. 
--
-- An entry   must be added to   the lecsTable.  For  the  LECS  to be
-- functional the  lecsEntry   must   reference   an entry in      the
-- lecsConfigTblTable.   A lecsEntry can   be created however, without
-- the existence of a corresponding lecsConfigTblEntry. 
--
-- After an entry has been created in the lecsTable, ATM addresses can
-- be bound to it  by use of the  lecsAtmAddrTable.  Entries added  to
-- the lecsAtmAddrTable, will dictate which  ATM Addresses a LECS will
-- receive  requests on.   Only when there   are entries in   both the
-- lecsTable   and  lecsAtmAddrTable  will  configuration  requests be
-- received and processed.  
-- 
-- The real data that is referenced within the configuration frames is
-- located   in   the  lecsElanConfigTable,    lecsMacConfigTable  and
-- lecsAtmAddrConfigTable. The management  station will want to create
-- entries in these tables  as appropriate to model the  corresponding
-- LAN emulation  set  up.  These tables   may only be filled   once a
-- lecsConfigTblEntry has been created to hold them. 
-- 

 lecsTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "The  (conceptual)   table containing  the   interface
                specific information   of  the LECS  on   a particular
                device and its associated statistics for that interface. "
        ::= { lecs 1 }

 lecsEntry OBJECT-TYPE
        SYNTAX     LecsEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "An   entry  (conceptual   row) in   the    lecsTable,
                containing information   of a   LECS for a  particular
                interface.  Note that  deleting an entry will have the
                side effect of deleting  corresponding entries in  the
                lecsAtmAddrTable."  
        INDEX      { ifIndex }
        ::= { lecsTable 1 }

 LecsEntry ::= SEQUENCE {
        lecsConfigTableName     DisplayString, 
        lecsUpTime              TimeStamp,
        lecsInConfigReqs        Counter32,
        lecsInConfigErrors      Counter32,
        lecsOutConfigFails      Counter32,
        lecsLastFailCause       Integer32,
        lecsLastFailLec         AtmLaneAddress,
        lecsOperStatus          INTEGER,
        lecsAdminStatus         INTEGER,
        lecsStatus              RowStatus,
        lecsMasterState         TruthValue
 }

 lecsConfigTableName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (1..32))
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "The  textual name  used  to identify a  configuration
                table in  use by the  designated LECS.  Note that this
                value  must be  a  reference  to    an entry  in   the
                lecsConfigTblTable." 
        ::= { lecsEntry 1 }
        
 lecsUpTime OBJECT-TYPE
        SYNTAX     TimeStamp
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The value of sysUpTime when  this entry was created.
                Note that   changing the value  of the lecsAdminStatus
                will not affect the value of this object.  This object
                is only set at row creation  time ( whether it is from
                explicit use of SNMP, the CLI or from initialization at
                boot time)." 
        ::= { lecsEntry 2 }
         
 lecsInConfigReqs OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number  of LE_CONFIGURE_REQUESTs  that have been
                received by this  LECS on this  designated interface."
        ::= { lecsEntry 3 }

 lecsInConfigErrors OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "  Then number  of packets sent  to the  LECS from the
                lower layers  but which  were not correctly  formatted
                configure requests."
        ::= { lecsEntry 4 }

 lecsOutConfigFails OBJECT-TYPE
        SYNTAX     Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The number of  LE_CONFIGURE_RESPONSEs sent by this  
                particular LECS  whose status was other than success."
        ::= { lecsEntry 5 }

 lecsLastFailCause OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "  The    cause     for   rejection  of     the   last
                LE_CONFIGURE_REQUEST.  This  will be the value  of the
                status field    that    was sent   in   the  rejection
                LE_CONFIGURE_RESPONSE.  If the config server has never
                issued  a failed response  then  this object will have
                the value of 0." 
        ::= { lecsEntry 6 }

 lecsLastFailLec OBJECT-TYPE
        SYNTAX     AtmLaneAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "   The  ATM address  of    the LE  client whose  last
                configuration  request was rejected.  This ATM address
                will be  for the LE client who  was delivered the last
                LE_CONFIGURE_RESPONSE       that       caused      the
                lecsOutConfigFails object to increment.  This value is
                taken  directly from the  LE_CONFIGURE_REQUEST  and is
                not guarenteed to be correctly identify a LEC." 
        ::= { lecsEntry 7 }

 lecsOperStatus OBJECT-TYPE
        SYNTAX     INTEGER { active(1), inactive(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " This  object reflects the actual  state of  the LECS
                which  may differ  from that   of the  lecsAdminStatus
                object.   This     can occur    when    the  interface
                ifOperStatus     is   'down'   but the   corresponding
                lecsAdminStatus is 'active'." 
        ::= { lecsEntry 8 }

 lecsAdminStatus OBJECT-TYPE
        SYNTAX     INTEGER { active(1), inactive(2) }
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The desired  state of the  LECS on this interface as
                prescribed by the operator.   The actions of the agent
                will,  if  at all possible,  eventually  result in the
                desired  state being reflected in the lecsOperStatus."
        DEFVAL     { active }
        ::= { lecsEntry 9 }

 lecsStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The status object for the lecsEntry. Note that the
                lecsConfigTableName must be specified at row creation
                time." 
        ::= { lecsEntry 10 } 

 lecsMasterState OBJECT-TYPE
        SYNTAX     TruthValue
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " An indication of whether the LECS is acting as the
                operative master or is a redundant slave."
        ::= { lecsEntry 11 }

--
-- The ATM addresses associated with the particular LECSs
--

 lecsAtmAddrTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsAtmAddrEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  A  (conceptual)  table of ATM   addresses which are
                listened to by LECSs on this device."
        ::= { lecs 2 }

 lecsAtmAddrEntry OBJECT-TYPE
        SYNTAX     LecsAtmAddrEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry     (conceptual row) that denotes  an   ATM
                address, on   a  particular  interface, that  a   LECS
                listens on.  Note that an entry  in the lecsTable must
                exist for the corresponding  ifIndex first before  any
                ATM addresses can be assigned to it." 
        INDEX      { ifIndex, lecsAtmAddrIndex }
        ::= { lecsAtmAddrTable 1 }

 LecsAtmAddrEntry ::= SEQUENCE {
        lecsAtmAddrIndex        Integer32,
        lecsAtmAddrSpec         AtmLaneAddress,
        lecsAtmAddrMask         OCTET STRING,
        lecsAtmAddrActual       AtmLaneAddress,
        lecsAtmAddrState        INTEGER,
        lecsAtmAddrStatus       RowStatus
 }

 lecsAtmAddrIndex OBJECT-TYPE
        SYNTAX     Integer32 (1..2147483647)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An arbitrary number  that uniquely corresponds to  a
                value of lecsAtmAddrActual for a designated interface.
                Note that lecsAtmAddrActual could not  be used for the
                index since it may  not  be known at  the time  of row
                creation (to be  resolved through interaction with the
                switch).  This  value must remain  constant while  the
                device  is running.    It  is not   guarenteed to   be
                constant between reboots of the device." 
        ::= { lecsAtmAddrEntry 1 }

 lecsAtmAddrSpec OBJECT-TYPE
        SYNTAX     AtmLaneAddress
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "  An ATM  address specified by  the  network or local
                management that, with the ATM address mask, determines
                a  portion of  the  ATM address  that the  LECS on the
                designated   interface  will use  to  accept configure
                requests on.    If   this object  is  omitted   at row
                creation time then the LECS  will try to determine  an
                ATM address, through ILMI, on  its own.  When the LECS
                is configured  to have one  ATM  address (one entry in
                this table), modifying this  object will result in the
                LECS reinitializing and   dropping all connections  to
                it." 
        ::= { lecsAtmAddrEntry 2 }

 lecsAtmAddrMask OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE (0 | 20))
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "  A    bit  mask signifying   what   portion   of the
                specified ATM address is relevant.  If the ATM address 
                is not   specified (i.e. at   row creation time), then
                this object defaults to all zeros (no  portion of the 
                lecsAtmAddrSpec  value  is  relevant).    If  the  ATM
                address is specified   but this object  omitted at row
                creation then this object defaults to all ones (all of
                the specified   lecsAtmAddrSpec   value is  relevant).
                This object  cannot be specified  at row creation time
                without    also    specifying   a    value    for  the
                lecsAtmAddrSpec object.  When  the LECS is  configured
                to have  one ATM  address  (one entry in  this table),
                modifying   this  object    will result in    the LECS
                reinitializing  and dropping  all connections  to it."
        ::= { lecsAtmAddrEntry 3 }

 lecsAtmAddrActual OBJECT-TYPE
        SYNTAX     AtmLaneAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The  resulting address that the   LECS is accepting 
                configuration   requests  on   for   the    designated
                interface.   This  address is   the  result    of  the
                specified   ATM address,  its   mask   and interaction
                through the ILMI  with  the  switch. Note  that   this
                object   is    only   valid  when    the  corresponding
                lecsOperStatus is 'active'." 
        ::= { lecsAtmAddrEntry 4 }

 lecsAtmAddrState OBJECT-TYPE
        SYNTAX     INTEGER { actualValueInvalid(1),       -- 000
                             actualValueValid(2),         -- 001
                             registeredWithSignalling(3), -- 010
                             regSigAndValid(4),           -- 011
                             registeredWithIlmi(5),       -- 100
                             regIlmiAndValid(6),          -- 101
                             regSigandIlmi(7),            -- 110
                             regSigIlmiAndValid(8)        -- 111
                             }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " Once a (conceptual) row   is created, the LECS,   if
                active,    goes about  interacting   through ILMI  and
                registering the address with the switch.  The value of
                this object denote  what phase the current  address is
                in.  Whether  the  lecsAtmAddrActual is valid  or not,
                whether the address  has  been registered  through the
                ILMI and whether the  address has been registered with
                signalling. "
        ::= { lecsAtmAddrEntry 5 }
                

 lecsAtmAddrStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The status object for the lecsAtmAddrTable."  
        ::= { lecsAtmAddrEntry 6 }


 lecsConfigDirectConnTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsConfigDirectConnEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " This (conceptual)   table allows a  manager  to view
                what LE   clients  have established   configure direct
                connections to the LECS over the designated interface."
        ::= { lecs 3 }

 lecsConfigDirectConnEntry OBJECT-TYPE
        SYNTAX     LecsConfigDirectConnEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry  (conceptual row) that denotes a connection
                to the LECS in the form  of a configure direct.  It is
                important to note that the lecsConfigDirectConnSrc and
                lecsConfigDirectConnDst are  only significant when the
                VC is a SVC.  When the row represents a PVC then these
                two columns will be omitted from the row, resulting in
                a sparse table." 
        INDEX     { ifIndex, lecsConfigDirectConnVpi, lecsConfigDirectConnVci }
        ::= { lecsConfigDirectConnTable 1 }

 LecsConfigDirectConnEntry ::= SEQUENCE {
        lecsConfigDirectConnVpi     VpiInteger,
        lecsConfigDirectConnVci     VciInteger,
        lecsConfigDirectConnVCType  INTEGER,
        lecsConfigDirectConnSrc     AtmLaneAddress,
        lecsConfigDirectConnDst     AtmLaneAddress,
        lecsConfigDirectDstType     INTEGER
 }
        
 lecsConfigDirectConnVpi OBJECT-TYPE
        SYNTAX     VpiInteger
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  The  virtual path   identifier  of  the  designated
                connection to the LECS."
        ::= { lecsConfigDirectConnEntry 1 }

 lecsConfigDirectConnVci OBJECT-TYPE
        SYNTAX     VciInteger
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " The  virtual channel   identifier of  the designated
                connection to the LECS."
        ::= { lecsConfigDirectConnEntry 2 }

 lecsConfigDirectConnVCType OBJECT-TYPE
        SYNTAX     INTEGER { pvc(1), svc(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                "  The type of virtual  connection that the designated
                configure direct uses.   If this object  has the value
                'pvc'    then the     lecsConfigDirectConnSrc      and
                lecsConfigDirectConnDst   will not  be  instantiated."
        ::= { lecsConfigDirectConnEntry 3 } 
        
 lecsConfigDirectConnSrc OBJECT-TYPE
        SYNTAX     AtmLaneAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The calling party ID if the VC is  a SVC.  If the VC
                is a PVC  then this object  shall not be  instantiated
                for the designated VC."
        ::= { lecsConfigDirectConnEntry 4 }

 lecsConfigDirectConnDst OBJECT-TYPE
        SYNTAX     AtmLaneAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The address that  was used by  the requesting LEC to
                make the designated  connection.  The called party  ID
                if  the VC is   a SVC.  If the VC   is a PVC then this
                object shall not be instantiated for the designated VC."
        ::= { lecsConfigDirectConnEntry 5 }

 lecsConfigDirectDstType OBJECT-TYPE
        SYNTAX     INTEGER { laneClient(1), laneServer(2),
                             laneConfig(3), unknown(4) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The type of entity on the other end of the VC."
        ::= { lecsConfigDirectConnEntry 6 }

--
-- The following tables are facets of the configuration tables that the 
-- LECS has access to.
--
 lecsConfigTblTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsConfigTblEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A (conceptual)   table of the   configuration tables
                in existence  on the device. Note   that an entry must
                exist in this   table before it  can  be used in  the 
                lecsTable, lecsElanConfigTable, lecsMacConfigTable  or
                lecsAtmAddrConfigTable."
        ::= { config 1 }

 lecsConfigTblEntry OBJECT-TYPE
        SYNTAX     LecsConfigTblEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "   An   entry   (conceptual  row)  that    denotes  a
                configuration table, potentially accessible by a LECS."
        INDEX      { IMPLIED lecsConfigTblName }
        ::= { lecsConfigTblTable 1 } 

 LecsConfigTblEntry ::= SEQUENCE {
        lecsConfigTblName             DisplayString,
        lecsConfigTblDefaultElanName  DisplayString,
        lecsConfigTblStatus           RowStatus
 }

 lecsConfigTblName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (1..32))
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "The textual name   used to  identify a  configuration
                table." 
        ::= { lecsConfigTblEntry 1 }

 lecsConfigTblDefaultElanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (0..32))
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "  The ELAN  name assigned to   LE clients who  do not
                specify what  ELAN they  wish  to join when  issuing a
                configuration  request.  It is important to understand
                when the default ELAN name  will be used.  If the  LEC
                specifies  an  ELAN name in  its configuration request
                and  a different mapping  or  a conflicting mapping is
                present for that LEC then the default ELAN will not be
                used and a failure will be returned.   
                        If the  LEC does not specify  the ELAN name in
                the  configuration  request  and there   is no mapping
                within  the LECS then  the  default elan name will  be
                used and a successful reply will be returned (provided
                the  rest of the  request is  valid). If  there is  no
                default  ELAN specified  for this  configuration table
                then a LE client, with no mapping to any elan, will be
                rejected   from  configuration  regardless  of     the
                parameters of the  configuration request.  The default
                value (''H) indicates  that  no default ELAN   name is
                selected.       
                        The default ELAN cannot have an access type of
                closed.  Attempting to set  the default ELAN type to a
                closed ELAN will result in an error."
        DEFVAL     { ''H }
        ::= { lecsConfigTblEntry 2 }

 lecsConfigTblStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The status  object  associated  with the  designated
                entry.    Note         that   a        value       for
                lecsConfigTblDefaultElanName   cannot  be specified at
                row creation  time  (as it points  to  an entry in the
                lecsElanConfigTable  which depends on this  designated
                entry).   A   management station wishing  to   set the
                lecsConfigTblDefaulElanName   must do so in subsequent
                SET requests to the now active row."
        ::= { lecsConfigTblEntry 3 }

 lecsElanConfigTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsElanConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A  (conceptual)  configuration table that represents
                the names  of  the ELANs   known to  a LECS  and their
                corresponding LES ATM addresses."
        ::= { config 2 }

 lecsElanConfigEntry OBJECT-TYPE
        SYNTAX     LecsElanConfigEntry 
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row)  in the ELAN configuration
                table representing  a mapping from  an  ELAN name to a
                LES ATM address.  Note that a value  of ELAN name must
                exist in this  table before it  can be used within the
                lecsMacConfigTable  or    the  lecsAtmAddrConfigTable.
                Also  note  that the  IMPLIED  indexing of  this table
                will not translate to the SNMPv1 SMI."
        INDEX { lecsConfigTblName, IMPLIED lecsElanConfigName }
        ::= { lecsElanConfigTable 1 }

 LecsElanConfigEntry ::= SEQUENCE {
        lecsElanConfigName      DisplayString,
        lecsElanLesAtmAddr      AtmLaneAddress,
        lecsElanAccess          INTEGER,
        lecsElanConfigStatus    RowStatus,
        lecsElanSegmentId       INTEGER
 }

 lecsElanConfigName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (1..32))
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " The name  assigned to an  ELAN in this configuration
                entry." 
        ::= { lecsElanConfigEntry 1 }

 lecsElanLesAtmAddr OBJECT-TYPE
        SYNTAX     AtmLaneAddress
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The ATM address of  the LES associated with the ELAN
                of this entry."
        ::= { lecsElanConfigEntry 2 }

 lecsElanAccess OBJECT-TYPE
        SYNTAX     INTEGER { open(1), closed(2) } 
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "  The access of  the  ELAN to  configure requests.  A
                'closed' ELAN (similar  to  a closed user  group)  is
                prevented from being used as the default ELAN and also
                may not be   asked  for in  the   LE_CONFIGURE_REQUEST
                solely by    ELAN name.  As  such   only  clients that
                provide an ATM address   or MAC address that has  been
                configured  for    the 'closed' ELAN   will   be given
                returned a successful LE_CONFIGURE_RESPONSE."
        DEFVAL { open }
        ::= { lecsElanConfigEntry 3 }

 lecsElanConfigStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " This object can  only be set to  active once a valid
                value of lecsElanLesAtmAddr is filled in."
        ::= { lecsElanConfigEntry 4 }

 lecsElanSegmentId OBJECT-TYPE
        SYNTAX     INTEGER (0..4095)
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The Segment Id for Token Ring ELANs associated with
                this ELAN.  A value of zero indicates that a ring
                number is not applicable to this ELAN."
        ::= { lecsElanConfigEntry 5 }

 lecsMacConfigTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsMacConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A   (conceptual) table utilized by a   LECS to map a
                registered MAC address of a LEC to an ELAN name.  This
                table is used be the LECS to  assign a LEC to an ELAN.
                It  is, however, not  mandatory  for all  configurable
                LECs to be in  this table as they  may opt to use  the
                lecsAtmAddrConfigTable instead  or perhaps rely on the
                default ELAN set in the lecsConfigTblTable.  Also note
                that  a  LES may  opt to use  this table  to determine
                authorization of a LEC to join an ELAN." 
        ::= { config 3 }

 lecsMacConfigEntry OBJECT-TYPE 
        SYNTAX     LecsMacConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row) of a mapping between a MAC
                address in primary utilization  by  a LEC and an  ELAN
                name." 
        INDEX      { lecsConfigTblName, lecsMacConfigAddress }
        ::= { lecsMacConfigTable 1 }

 LecsMacConfigEntry ::= SEQUENCE {
        lecsMacConfigAddress    MacAddress,
        lecsMacConfigElanName   DisplayString,
        lecsMacConfigLastUsed   TimeStamp,
        lecsMacConfigStatus     RowStatus
 }

 lecsMacConfigAddress OBJECT-TYPE
        SYNTAX     MacAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  The MAC address of a  to be associated with an ELAN
                name." 
        ::= { lecsMacConfigEntry 1 }

 lecsMacConfigElanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (1..32))
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " An ELAN name  that  will be returned  to a  LEC that
                provides   the   corresponding  MAC   address    in  a
                configuration  request.  Note  that  only  ELAN  names
                within the  lecsElanConfigTable  are acceptable values
                for  this object.  If this  object is left unspecified
                at row creation, then it will take on the value of the
                lecsConfigTblDefaultElanName  from    the   designated
                configuration table."
        ::= { lecsMacConfigEntry 2 }
 
 lecsMacConfigLastUsed OBJECT-TYPE
        SYNTAX     TimeStamp
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The value of sysUpTime when this entry was last used
                to map a  MAC address to an  ELAN name.  Managers  may
                opt to use this object to garbage collect entries that
                have not been used for a prolonged period of time."
        ::= { lecsMacConfigEntry 3 }

 lecsMacConfigStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "  The row   cannot   be set   to  'active' until   an
                appropiate  value exists  for   lecsMacConfigElanName.
                This  may be provided by  the agent if  there exists a
                value for  the lecsConfigTblDefaultElanName  for   the
                designated lecsConfigTblName."
        ::= { lecsMacConfigEntry 4 }

 lecsAtmAddrConfigTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsAtmAddrConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " This (conceptual) table is  used by the LECS to  map
                between an ATM address of a LEC and ELAN name. "
        ::= { config 4 }

 lecsAtmAddrConfigEntry OBJECT-TYPE
        SYNTAX     LecsAtmAddrConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  An entry (conceptual row)  of the config table that
                maps between an ATM address of a LEC and ELAN name."
        INDEX      { lecsConfigTblName, lecsAtmAddrConfigAddress, 
                     lecsAtmAddrConfigMask }
        ::= { lecsAtmAddrConfigTable 1 }

 LecsAtmAddrConfigEntry ::= SEQUENCE {
        lecsAtmAddrConfigAddress        OCTET STRING,
        lecsAtmAddrConfigMask           OCTET STRING,
        lecsAtmAddrConfigElanName       DisplayString,
        lecsAtmAddrLastUsed             TimeStamp,
        lecsAtmAddrConfigStatus         RowStatus 
 }

 lecsAtmAddrConfigAddress OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE (20))
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An ATM  Address of a LEC  that when combined with an
                address mask is used  to  determine which ELAN the  LE
                client should belong to."
        ::= { lecsAtmAddrConfigEntry 1 }

 lecsAtmAddrConfigMask OBJECT-TYPE 
        SYNTAX     OCTET STRING (SIZE (20))
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  An  ATM address mask  associated   with the LEC ATM
                address of this entry. Bits  in this mask that are set
                to zero  indicate that  corresponding bit locations in
                the  comparison ATM address  are to be ignored for the
                purposes of  matching.  A mask of  all  zeros would be
                the trivial case of having all comparisons match while
                a  mask  of  all   ones indicates  that   the  two ATM
                addresses must  match exactly.   This object is useful
                due to  the fact that  ATM  addresses are  a composite
                negotiated by the switch  and connected device.   Wild
                carding  the  prefix   of  an   addresses  indicates a
                preference  of where a LEC  is  to join regardless  of
                what switch it  is attached from.  Wildcarding the ESI
                and selector  byte indicates that  a LEC is  to join a
                certain ELAN based on what switch it is attached to." 
        ::= { lecsAtmAddrConfigEntry 2 }

 lecsAtmAddrConfigElanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (1..32))
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The ELAN name to  be returned to a configure request
                that has specified an ATM   address that matches   the
                address/mask pair in this entry.   Note that only ELAN
                names  within the  lecsElanConfigTable are  acceptable
                values  for this   object.  If  this  object is   left
                unspecified at row creation,  then it will take on the
                value of  the lecsConfigTblDefaultElanName  from   the
                designated configuration table." 
        ::= { lecsAtmAddrConfigEntry 3 }

 lecsAtmAddrLastUsed OBJECT-TYPE
        SYNTAX     TimeStamp
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The value  of sysUpTime  corresponding to  the  time
                this entry was last used.  The manager  may opt to use
                this object to garbage  collect entries that have  not
                been used for a prolonged period of time."
        ::= { lecsAtmAddrConfigEntry 4 }

 lecsAtmAddrConfigStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The  status of this entry (conceptual)   row in the 
                lecsAtmAddrConfigTable.  The   row  cannot be  set  to
                'active'   until   an  appropiate   value   exists for
                lecsAtmAddrConfigElanName. This may be provided by the
                agent  if    there   exists   a   value     for    the
                lecsConfigTblDefaultElanName     for   the  designated
                lecsConfigTblName." 
        ::= { lecsAtmAddrConfigEntry 5 }

 lecsLesConfigTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsLesConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A table of LESs servicing an ELAN."
        ::= { config 5 }

 lecsLesConfigEntry OBJECT-TYPE
        SYNTAX     LecsLesConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row) in the
                lecsLesConfigTable."
        INDEX { lecsConfigTblName, lecsElanConfigName, lecsLesAtmAddr }
        ::= { lecsLesConfigTable 1 }

 LecsLesConfigEntry ::= SEQUENCE {
        lecsLesAtmAddr      OCTET STRING,
        lecsLesPriority     INTEGER,
        lecsLesConnState    INTEGER,
        lecsLesConfigStatus RowStatus
 }

 lecsLesAtmAddr OBJECT-TYPE
        SYNTAX     OCTET STRING (SIZE(20))
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " The ATM address of a LES configured to service this
                ELAN." 
        ::= { lecsLesConfigEntry 1 }

 lecsLesPriority OBJECT-TYPE
        SYNTAX     INTEGER (0..10000)
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The relative priority of the LES.  The lower this
                number the more priority is given the LES for
                servicing the ELAN.  Such that a higher priority LES
                will supersede operation of the ELAN in the presence
                of a lower priority LES.
                  Note that the LECS will adjust the number entered to
                fit into a contiguous numbering space equalling the
                number of LESs defined for the particular ELAN.  For
                example if there is one LES defined for an ELAN then
                that LES's priority will always be zero since there
                are no other LESs to contend with.  Setting that LESs
                priority to ten (e.g.) will work but the net result
                will be that the priority will still be zero (as will
                be verified by consequent retrieval of this objects
                value).  If a second LES is defined for this ELAN with
                a priority of ten (e.g.) the net result would be that
                the second LES will have a priority of one since it is
                the only other LES for that ELAN and behind in
                priority from the first LES.  If the second LES were
                given a priority of zero at any time then it would
                keep the priority of zero and the first LES would
                transition to having a priority of one.
                  Note that defining a new LES with a priority already
                in existance by another LES has the effect of giving
                the new LES the designated priority and reducing the
                priority (numerically increasing) of all LESs equal to
                and below it in rank.
                  Likewise, deleting a LES from this table will cause
                LESs below it in priority (numerically greater) to
                move up in the table (modifying their priority value
                to be one less) to fill in the now empty slot.  
                  In this way a table, with at least one entry, should
                always contain entries with priorities including zero
                up to the number of entries minus one (0..(n-1))."
        DEFVAL { 0 }
        ::= { lecsLesConfigEntry 2 }

 lecsLesConnState OBJECT-TYPE
        SYNTAX     INTEGER { active(1), inactive(2), notConnected(3) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The present state of the given LES.  The active(1)
                LES is servicing the ELAN, inactive(2) LESs are
                connected but not accepting joins, not-connected(3)
                LESs are not accounted for."
        ::= { lecsLesConfigEntry 3 }

 lecsLesConfigStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " The status of the conceptual row."
        ::= { lecsLesConfigEntry 4 }

 lecsRDConfigTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF LecsRDConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " A   (conceptual) table utilized by a   LECS to map a
                registered Route Descriptor of a LEC to an ELAN name.
                This table is used by the LECS to  assign a LEC to an
                ELAN.  It  is, however, not  mandatory  for all
                configurable LECs to be in  this table as they  may
                opt to use the lecsAtmAddrConfigTable or
                lecsMacConfigTable instead  or perhaps rely on the 
                default ELAN set in the lecsConfigTblTable.  Also note
                that  a  LES may  opt to use  this table  to determine
                authorization of a LEC to join an ELAN." 
        ::= { config 6 }

 lecsRDConfigEntry OBJECT-TYPE 
        SYNTAX     LecsRDConfigEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                " An entry (conceptual row) of a mapping between a
                Route Descriptor in primary utilization  by  a LEC and
                an  ELAN name." 
        INDEX      { lecsConfigTblName, lecsRDConfigSegmentId,
                     lecsRDConfigBridgeNum } 
        ::= { lecsRDConfigTable 1 }

 LecsRDConfigEntry ::= SEQUENCE {
        lecsRDConfigSegmentId   INTEGER,
        lecsRDConfigBridgeNum   INTEGER,
        lecsRDConfigElanName    DisplayString,
        lecsRDConfigLastUsed    TimeStamp,
        lecsRDConfigStatus      RowStatus
 }

 lecsRDConfigSegmentId OBJECT-TYPE
        SYNTAX     INTEGER (0..4095)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  The Segment ID in a Route Descriptor provided by a
                LEC during configuration. " 
        ::= { lecsRDConfigEntry 1 }

 lecsRDConfigBridgeNum OBJECT-TYPE
        SYNTAX     INTEGER (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
                "  The Bridge Number in a Route Descriptor provided by a
                LEC during configuration. " 
        ::= { lecsRDConfigEntry 2 }

 lecsRDConfigElanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE (1..32))
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                " An ELAN name  that  will be returned  to a  LEC that
                provides  the corresponding   Route  Descriptor  in  a
                configuration  request.  Note  that  only  ELAN  names
                within the  lecsElanConfigTable  are acceptable values
                for  this object.  If this  object is left unspecified
                at row creation, then it will take on the value of the
                lecsConfigTblDefaultElanName  from    the   designated
                configuration table."
        ::= { lecsRDConfigEntry 3 }
 
 lecsRDConfigLastUsed OBJECT-TYPE
        SYNTAX     TimeStamp
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
                " The value of sysUpTime when this entry was last used
                to map a Route Descriptor to an ELAN name.  Managers may
                opt to use this object to garbage collect entries that
                have not been used for a prolonged period of time."
        ::= { lecsRDConfigEntry 4 }

 lecsRDConfigStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
                "  The row   cannot   be set   to  'active' until   an
                appropiate  value exists  for   lecsRDConfigElanName.
                This  may be provided by  the agent if  there exists a
                value for  the lecsConfigTblDefaultElanName  for   the
                designated lecsConfigTblName."
        ::= { lecsRDConfigEntry 5 }
 
 lecsMIBConformance OBJECT IDENTIFIER ::= { ciscoLecsMIB 2 }
 lecsMIBCompliances OBJECT IDENTIFIER ::= { lecsMIBConformance 1 }
 lecsMIBGroups      OBJECT IDENTIFIER ::= { lecsMIBConformance 2 }

 lecsMIBCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
                " The   compliance   statement for   entities    which
                implement the Cisco LECS MIB."
        MODULE
                MANDATORY-GROUPS { lecsMIBGroup }
        ::= { lecsMIBCompliances 1 }

 lecsMIBGroup OBJECT-GROUP
        OBJECTS { lecsConfigTableName, lecsUpTime, lecsInConfigReqs, 
                  lecsInConfigErrors, lecsOutConfigFails,
                  lecsLastFailCause, lecsLastFailLec, lecsOperStatus,
                  lecsAdminStatus, lecsStatus, lecsAtmAddrSpec,
                  lecsAtmAddrMask, lecsAtmAddrActual,
                  lecsAtmAddrState, lecsAtmAddrStatus,
                  lecsConfigDirectConnSrc, lecsConfigDirectConnDst,
                  lecsConfigTblStatus, lecsElanLesAtmAddr,
                  lecsElanConfigStatus, lecsMacConfigElanName,
                  lecsMacConfigLastUsed, lecsMacConfigStatus,
                  lecsAtmAddrConfigElanName, lecsAtmAddrLastUsed,
                  lecsAtmAddrConfigStatus, lecsConfigDirectConnVCType,
                  lecsConfigTblDefaultElanName, lecsElanAccess 
                }
        STATUS current
        DESCRIPTION
                " A collection  of  objects for  the managing  of LECS
                operation." 
        ::= { lecsMIBGroups 1 }

 lecsTokenRingMIBGroup OBJECT-GROUP
        OBJECTS { lecsElanSegmentId, lecsRDConfigElanName,
                  lecsRDConfigLastUsed, lecsRDConfigStatus }
        STATUS current
        DESCRIPTION
                " A collection of objects for the managing of the LECS
                emulated token ring operation."
        ::= { lecsMIBGroups 2 }

 lecsRedundancyMIBGroup OBJECT-GROUP
        OBJECTS { lecsMasterState, lecsConfigDirectDstType,
                  lecsLesPriority, lecsLesConnState,
                  lecsLesConfigStatus }
        STATUS current
        DESCRIPTION
                " A collection of objects for the managing of the
                LECS/LES redundancy operation."
        ::= { lecsMIBGroups 3 }
END